wm geom .konsola 588x761+440+63; wm geom .output 348x512+83+62; wm withdraw . ## symul synch - przyklad # source symul_lib.tcl; # ladowanie symulatora # tworzymy graf komunikacyjny (w tym wypadku cykl) set liczbaWierz 5 set sasiedzi(0) {4 1} set sasiedzi(1) {0 2} set sasiedzi(2) {1 3} set sasiedzi(3) {2 4} set sasiedzi(4) {3 0} #% 3 0 fiber create $liczbaWierz run fiber_iterate { proc run {} { global id run kom0 kom1 if {$id==0} {wyslij 1 0} fiber yield; # oznacza koniec rundy while {$run} { # zmienna run pozwala zakonczyc dzialanie symulacji!! if {$kom0!=""} { set x $kom0 incr x wyslij 1 $x } fiber yield; # oznacza koniec rundy } } } Inicjalizacja; # koniecznie trzeba to wywolac!!! proc wizualizacja {} { _puts "---" fiber_iterate {_puts "$id: $kom0, $kom1"} } # ... do tego miejsca mozna wszystko wykonac _puts ---; fiber_iterate {_puts "$id, $id_los"} #set_run 0; fiber yield; set_run 1; fiber restart #fiber_iterate {set id_los [expr round(rand()*10000)]} # + restart i zmiana id_los fiber error #fiber_dbg_proc 0 run #fiber_dbg_proc 1 run fiber yield; runda; wizualizacja; # uruchamiamy runde exit